草庐IT

D3 笔记

全部标签

javascript - 使用 D3.js 的 <circle> 属性 cx =“NaN” 的值无效

我正在尝试创建一种散点图形式。我有一个自定义的x轴和两个a轴的特定比例。我也为它实现了缩放功能。到目前为止一切都很好,但是当我最终尝试将我的数据绘制为圆圈时,出现了两个错误:.我的图可以在这个网站上看到:http://servers.binf.ku.dk/hemaexplorerbeta/(圆圈很大,因为我想确保在设计它们之前大致知道它们的位置)我根据从MYSQL服务器读取的数据创建我的圈子。我检查了我所有的数据,数字是正确的。他们要么绘制错误,要么我的比例/缩放有问题。您可能还会注意到,我最初使用一些值创建轴和比例,然后立即在某些函数中更改它们。这是因为我计划在网站上加载一个空图,用

javascript - d3.scale.category20 对我来说太聪明了

任何人都可以向我解释为什么这两个表达式返回不同的值...log1.text(c20(1));//"#aec7e8"log2.text(d3.scale.category20()(1));//"#1f77b4"...在以下上下文中工作示例...varc20=d3.scale.category20(),col=d3.range(20).map(function(c){returnc20(c).replace("#","0x")}),log1=d3.select("#log1"),log2=d3.select("#log2");log1.text(c20(1));//"#aec7e8"log

javascript - 将 D3 注入(inject) AngularJS 的正确约定

我见过只使用全局D3对象的指令,我也见过通过在服务中返回它来注入(inject)全局D3对象的指令,我见过添加D3脚本并返回一个在提供D3对象的脚本加载时解决的promise。在可注入(inject)服务中使用它似乎最有意义(参见示例1和2),但我不确定哪种方式更好。示例2将保证D3在运行任何代码之前已经加载,但似乎没有人这样做,而且这意味着您必须将整个指令包装在服务中,否则d3和创建的svg对象超出范围或可能未定义(参见示例2),但我相信至少编译的promise总是首先解决,参见示例3。示例1:服务传递D3全局对象.factory('D3Service',[,function(){/

javascript - 在 javascript/d3 中具有力导向布局的 Beeswarm 图

这是一个articleoncreatingbeeswarmplotsinR.还有Rpackageforbeeswarmplot.接下来的两张图片说明了该软件包提供的一些可能性:但是,我现在正尝试使用d3.js的力导向布局来实现它.我的计划是让自定义重力将点拉向垂直线及其适当的y值,碰撞检测使点彼此远离。我有asemi-workingprototype:不幸的是,我找不到解决两个问题的方法——我怀疑这两个问题实际上是同一个问题:我的观点一直有重叠,至少有一点重叠。点数累积后,正在进行“洗牌”布局的中心,作为防撞力和“来到中心”部队战斗。我希望这些点能很快就他们应该住在哪里达成一致,并且不

javascript - 将数据传递给 d3.svg.line()

所以,我有一个像这样的Javascript对象:-对象{数据:Array[39],时间:Array[39]}object.data是一个值数组,而object.time是一个javascript的日期对象数组。我正在尝试在D3中绘制折线图。我的代码的相关部分://Linefunctionvarline=d3.svg.line().x(function(d,i){returnx(d.time);}).y(function(d,i){returny(d.data);});//DrawLinesvg.append("path").datum([data]).attr("class","lin

javascript - 使用 D3.js 和 Immutable.js

在我的应用程序中,我使用D3.js进行一些可视化。现在,D3使用可变原生JavaScript数据结构。因此,为了与Immutable.js一起工作,需要进行一些数据编码。我还将Reflux与React结合使用,因此在我的Store中我管理了一个不可变映射。由于此map在每次更改时都会成为新事物,我不能只将它传递给D3ForceLayout,因为它适用于可变数据,因此每次它都会从头开始重新计算所有内容。我最终管理不可变和可变数据结构,但这感觉很不对。我找到了一篇文章,PracticalTimeSeriesVisualizationusingD3+OM,这似乎触及了主题并建议使用游标。问题

javascript - D3.js 具有相同刻度位置的多个 y 轴?

我有一个包含3个y轴和一个x轴的图表,必须缩放所有3个轴。!DEMO是否可以将所有3个y轴的中心都设置为0?如果我缩放图表刻度必须留在同一个地方?或者,也许,说“总是只显示0值之间的10个刻度”。例如:范围1->[10..0..-10]范围2->[350..0..-350]范围3->[0,1..0..0,9]但是来自所有3个范围的所有报价都必须保持在同一位置。更新//zoomingvarzoom0=d3.behavior.zoom().x(x).y(_y[0]).on("zoom",zoomed);varzoom1=d3.behavior.zoom().y(_y[1]);varzoom

javascript - 如何控制d3 force layout的仿真速度

我正在关注像this这样的d3强制布局示例.我想控制点飞向簇的速度。换句话说,我想让一些点花更多的时间到达它们的最终位置,而一些点花更少的时间。我尝试添加一个计时器功能来控制每个滴答的时间,但没有成功。this.force=d3.layout.force().on("tick",setTimeout(tick(d),50));我需要帮助。 最佳答案 不要设置计时器来调用tick函数,这是由强制布局自动完成的。然而,您可以设置许多参数来修改强制布局的行为。以下是与您尝试做的事情最相关的内容。.friction()对应于速度衰减的速度,

javascript - D3 事件在隐藏的 svg 元素上触发

我似乎找不到这个问题的答案,我花了一段时间将它重新创建为一个独立的fiddle/笔,但我终于找到了。我正在开发使用D3绘制和操作svg图形的Vaadin应用程序。在某一点上,屏幕上有svg,它具有visibility:hidden。这在所有浏览器中都能完美地找到。这些隐藏元素有点击和鼠标悬停事件,在所有浏览器中都能找到但是在firefox版本34中,隐藏元素仍然会在它们仍然隐藏时触发它们的事件(单击和鼠标悬停)。为了更好地解释:当一个按钮被隐藏时,它的鼠标悬停事件不应该触发,当它可见时应该触发。这就是它在所有浏览器中的工作方式,除了firefox34、35beta和36开发版。它在Fi

javascript - 从 CSV 数据创建 D3.js 可折叠树

对于那些更熟悉d3的人来说,这可能是一个有点愚蠢的问题,但我对它还很陌生,我不太明白如何让它工作:我想要实现的是:http://bl.ocks.org/robschmuecker/7880033但我想从平面CSV而不是JSON中为它提供数据。问题是我的CSV格式如下:ParentName|ChildName-------------------------ParentName|ChildName-------------------------ParentName|ChildNamesoon...有人可以指出我正确的方向吗?我知道d3.csv函数以某种方式工作,但我不知道如何将其“插入